package com.example.demo.service;

import com.example.demo.dao.UserInfoMapper;
import com.example.demo.entity.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @ClassName UserInfoServiceImpl
 * @Author bsy
 * @Description T
 *
 * 不带事务的方法调用该类中带事务的方法，不会回滚。
 * 因为spring的回滚是用过代理模式生成的，
 * 如果是一个不带事务的方法调用该类的带事务的方法，直接通过 this.xxx() 调用，而不生成代理事务，所以事务不起作用
 * @Date 2022/8/16 22:37
 * @Version 1.0
 */
@Service
//@Transactional
public class UserInfoServiceImpl {

    @Autowired
    UserInfoMapper userInfoMapper;

    public int insertSelective(UserInfo record) {
        return userInfoMapper.insertSelective(record);
    }

    @Transactional
    public int updateByPrimaryKeySelective(UserInfo record) {
        int i=1/0;
        record=new UserInfo();
        record.setId(100);
        record.setSerial("李四");
        return userInfoMapper.updateByPrimaryKeySelective(record);
    }

    @Transactional
    public void add1(UserInfo record){
        userInfoMapper.insertSelective(record);
        int i=1/0;
    }


    public void add2(UserInfo record){
        userInfoMapper.insertSelective(record);
        updateByPrimaryKeySelective(record);
    }

}
